package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * java.util.List接口
 * List接口继承自Collection。
 * List集合的特点:可以存放重复元素且有序。
 * List提供了一套通过下标操作元素的方法。
 * 常用实现类:
 * java.util.ArrayList:内部使用数组实现，查询性能更好。
 * java.util.LinkedList:内部使用链表实现，首尾增删性能更好。
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
//        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println("list:"+list);
        /*
            E get(int index)
            根据下标获取指定元素
         */
        String e = list.get(1);//获取第二个元素
        System.out.println(e);
        //普通的for循环是可以遍历List集合的
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

        /*
            E set(int index, E e)
            将给定元素设置到指定位置，并返回被替换的元素
         */
        //[one, two, six, four, five]
        e = list.set(2,"six");
        System.out.println(list);
        System.out.println("被替换的元素:"+e);

        /*
            反转集合
         */
//        Collections.reverse(list);

//        for(int i=0;i<list.size()/2;i++){
//            //获取正数位置的元素
//            String str = list.get(i);
//            //将正数位置的元素设置到倒数位置并获取被替换的倒数位置元素
//            str = list.set(list.size()-1-i,str);
//            //将原倒数位置的元素设置到正数位置上
//            list.set(i,str);
//        }

        for(int i=0;i<list.size()/2;i++){
            list.set(i,list.set(list.size()-1-i,list.get(i)));
        }
        //  0     1         3     4
        //[five, four, six, two, one]
        //[five, four, six, two, one]
        System.out.println(list);


    }
}


